登录 白背景

5943. 删除链表的中间节点

https://leetcode-cn.com/problems/delete-the-middle-node-of-a-linked-list/

  • 提交时间:2021-12-05 04:18:10
  • 执行用时:260 ms, 在所有 Go 提交中击败了100.00%的用户
  • 内存消耗:9.5 MB, 在所有 Go 提交中击败了100.00%的用户
  • 通过测试用例:70 / 70
/**
 * Definition for singly-linked list.
 * type ListNode struct {
 *     Val int
 *     Next *ListNode
 * }
 */
func deleteMiddle(head *ListNode) *ListNode {
    nodeLen := 1
    nodeHead := head
    nodeNow := head
    for {
        if nodeNow.Next == nil {
            break
        }
        nodeNow = nodeNow.Next
        nodeLen++
    }
    if nodeLen == 1 {
        return nil
    }

    nodeMid := nodeLen >> 1
    nodeNow = head
    lastNode := head
    nodePos := 0
    for {
        if nodePos == nodeMid {
            lastNode.Next = nodeNow.Next
            break
        }
        lastNode = nodeNow
        nodeNow = nodeNow.Next
        nodePos++
    }
    return nodeHead
}